SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[pje_porCodigosEspeciales] @idInscripcion as integer ,@pje as float output,@resultado as int  AS
set nocount on --para anular el trafico econ el cliente (no salen los print)
set dateformat mdy 

declare  @idAgente as int,@idCargoGenerico as int,@idAsignaturaGenerica as int, @idTipoConvocatoria as int ,@idlocalidad as int, @FechaLimite as datetime,@fechaCierreDeInscripciones as datetime,@nivel_insc as int,@ciclo as int
declare @titulo as int, @fechaEgreso as datetime,@idCapacitacion as integer, @FechaCapacitacion as datetime
declare @tieneCapacitacion as char(1) , @tieneCapacitacionParaHabilitaztes as char(1)
declare @Titulo1 as int,@Titulo2 as int,@Titulo3 as int,@Categoria as float
declare @cantidadPostgrados as int -- cantidad de postgrados relacionados al titulo con el que se inscribe el agente
--Variables del Cursor postitulos
declare @idcapacitacionc as int
declare @idagentec as int
declare @capacitacionc as int
declare @horascatedrac as int
declare @antiguedad as int
declare @promedio as float
declare @pjePromedio as float
--Variable codigos especiales--
declare @concepto1 varchar(20)
declare @concepto2 varchar(20)
declare @concepto3 varchar(20)

DECLARE @Error INT

BEGIN TRANSACTION
SET @ERROR=0


--TRAEMOS TODOS LOS DATOS DE LA INSCRIPCION A PARTIR DEL PARAMETRO DEL SP

select  @idAgente=i.Agente,@IdcargoGenerico = i.CargoGenerico,@IdAsignaturaGenerica=i.AsignaturaGenerica,@idtipoConvocatoria=Conv.TipoConvocatoria,@FechaLimite=Conv.FechaLimite,@fechaCierreDeInscripciones=Conv.fechaCierre,@nivel_insc = i.nivel,@ciclo=isnull(ciclo,1)
	from 
	tb_inscripcionesConvocatorias i 
		join tb_Convocatorias conv on i.Convocatoria=conv.idConvocatoria 
	where i.idInscripcionConvocatoria=@idInscripcion

set @pje=0
set @pjePromedio=0

--PUNTAJE PROMEDIO

--IF ANIDADO - EN EL PRIMER IF PREGUNTAMOS SI EXISTE UN TITULO DEL AGENTE CON TITULO 1 DE LA TABLA ANEXOTITULOS QUE CORRESPONDAN CON LA ASIGNATURA GENERICA EN QUE SE INSCRIBE
  if(exists( SELECT * from tb_titulosdelagente t where t.agente=@idagente and t.titulo iN(select a.titulo3 from tb_anexotitulos a where a.asignaturagenerica=@idasignaturagenerica)))
   begin
   --OBTENEMOS EL PROMEDIO (TITULO DOCENTE)
   set @promedio = (SELECT t.promedio from tb_titulosdelagente t where t.agente=@idagente and t.titulo iN(select a.titulo3 from tb_anexotitulos a where a.asignaturagenerica=@idasignaturagenerica))
   --PREGUNTAMOS SI PROMEDIO DEL TITULO CON EL QUE SE INSCRIBIO ES > 9.5 Y ASIGNAMOS PUNTAJE SEGUN REGLAMENTO
   if(@promedio>9.5)
		begin
			set @pjePromedio=1
	    end
	else if(@promedio >=8 and @promedio <=9.5)
		begin
			set @pjePromedio=0.5
	    end
   end
   --IF ANIDADO - EN EL SEGUNDO IF PREGUNTAMOS SI EXISTE UN TITULO DEL AGENTE CON TITULO 2 DE LA TABLA ANEXOTITULOS QUE CORRESPONDAN CON LA ASIGNATURA GENERICA EN QUE SE INSCRIBE
   else if(exists (SELECT * from tb_titulosdelagente t where t.agente=@idagente and t.titulo iN(select a.titulo2 from tb_anexotitulos a where a.asignaturagenerica=@idasignaturagenerica)))
   begin
   --OBTENEMOS EL PUNTAJE (TITULO HABILITANTE)
   set @promedio = (SELECT t.promedio from tb_titulosdelagente t where t.agente=@idagente and t.titulo iN(select a.titulo2 from tb_anexotitulos a where a.asignaturagenerica=@idasignaturagenerica))
   --PREGUNTAMOS SI PROMEDIO DEL TITULO CON EL QUE SE INSCRIBIO ES > 9.5 Y ASIGNAMOS PUNTAJE SEGUN REGLAMENTO
   if(@promedio>9.5)
		begin
			set @pjePromedio=1
	    end
	else if(@promedio >=8 and @promedio <=9.5)
		begin
			set @pjePromedio=0.5
	    end
   end
   --IF ANIDADO - EN EL TERCER IF PREGUNTAMOS SI EXISTE UN TITULO DEL AGENTE CON TITULO 3 DE LA TABLA ANEXOTITULOS QUE CORRESPONDAN CON LA ASIGNATURA GENERICA EN QUE SE INSCRIBE
   else if(exists (SELECT t.titulo from tb_titulosdelagente t where t.agente=@idagente and t.titulo iN(select a.titulo1 from tb_anexotitulos a where a.asignaturagenerica=@idasignaturagenerica)))
   begin
   --OBTENEMOS EL PUNTAJE (TITULO SUPLETORIO)
   set @promedio = (SELECT t.promedio from tb_titulosdelagente t where t.agente=@idagente and t.titulo iN(select a.titulo1 from tb_anexotitulos a where a.asignaturagenerica=@idasignaturagenerica))
   --PREGUNTAMOS SI PROMEDIO DEL TITULO CON EL QUE SE INSCRIBIO ES > 9.5 Y ASIGNAMOS PUNTAJE SEGUN REGLAMENTO
   if(@promedio>9.5)
		begin
			set @pjePromedio=1
	    end
	else if(@promedio >=8 and @promedio <=9.5)
		begin
			set @pjePromedio=0.5
	    end
   end
	    
--PUNTAJE CONCEPTOS    
declare @PjeConcepto as float
declare @anio as datetime
declare @anioActual as int
declare @anioAnt as int
declare @concepto as int
declare @cantAnios as int
declare @cantConSobre as int
set @PjeConcepto=0
set @cantAnios=0
set @cantConSobre=0
/* Ordenar cursor por anio y concepto en forma Desc */
select * from tb_conceptosdedesempeno
Set @anioAnt=(select Top 1 year(Anio)  from tb_conceptosdedesempeno where Agente=@idAgente order by Anio desc)
DECLARE codigosesp CURSOR FORWARD_ONLY FOR
SELECT c.concepto, c.anio FROM TB_CONCEPTOSDEDESEMPENO c where Agente=@idAgente
ORDER BY Anio desc, concepto desc
--ABRIMOS Y RECORREMOS EL CURSOR
open codigosesp
fetch next from codigosesp into @concepto, @anio
while @@FETCH_STATUS = 0
 begin
  Set @anioActual=year(@anio)
  if(@anioActual=@anioAnt)
	Begin
		if(@concepto= 4  or  @concepto= 5)
			Begin
				set @cantAnios=@cantAnios+1
				IF(@concepto= 5)
				Begin
					set @cantConSobre=@cantConSobre+1
				End
				IF(@cantAnios=3)
				Begin
					IF(@cantConSobre=3)
					Begin
						SET @PjeConcepto=1
					End 
					IF(@cantConSobre<3)
					Begin
						Set @PjeConcepto=0.5
					End
					Set @anioAnt='1900'
				End
				SET @anioAnt=@anioActual-1
			End else
			Begin
				--SET @anioAnt='1900'
			print 'hola'
			End
			
			 
	End

fetch next from codigosesp into @concepto, @anio
 end
close codigosesp
deallocate codigosesp		


--SETEAMOS EL PUNTAJE
set @pje = @PjeConcepto + @pjePromedio
--@pjeConcepto

IF @Error <> 0
begin
	print 'NO TIENE OTROS TITULOS DOCENTES'
	PRINT @@TRANCOUNT 
	ROLLBACK TRANSACTION
end
ELSE
	COMMIT TRANSACTION
GO
